/** Fichier définissant un cône.
 *
 * Ce fichier contient la définition de la classe Cone.
 *
 * @file Cone.hpp
 * @author Johan "Solo" Luisier
 *
 * @date 4 Juillet 2011
 */
#ifndef CONE_H
#define CONE_H

#include "FormeComposee.hpp"

/** Classe implémentant le cône pour le raytracing.
 *
 * Cette classe implémente le cône pour le raytracing. Le cône est défini dans
 * un système de coordonnées intrinsèque, la transformation dans le système
 * global est automatiquement effectuée lors de l'initialisation.
 *
 * Le cône est implémenté comme l'intersection d'une instance de BaseCone et
 * d'une instance de Plan.
 *
 * @author Johan "Solo" Luisier
 * @date 4 Juillet 2011
 *
 * @class Cone "Cone.hpp" "Formes/Cone.hpp"
 */
class Cone: public FormeComposee
{
public:
    Cone(const Coord& pt, const VecteurU& axe, const double& ouverture,
         const double& hauteur);
    //Cone(const Cone& cone);
    ~Cone();

    const VecteurU& axe() const;
    const Coord& sommet() const;
    const double& tanAlpha() const;
    const double& hauteur() const;

private:
    /**
     * Hauteur du cône.
     */
    double Hauteur;
};

#endif // CONE_H
